Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


meshchatx/src/frontend/js/registries/registryCore.js a9cc4b996b8da8ff414e305825f372ca12dc138d (a9cc4b99) Text, 1.10 KB

T8b949e// SPDX-License-Identifier: 0BSD

T8b949e/**
* @template T
* @typedef {Object} Registry
* @property {(entry: T) => void} register
* @property {(id: string) => void} unregister
* @property {(id: string) => T | undefined} get
* @property {() => T[]} list
* @property {() => void} clear
*/

T8b949e/**
* @template {{ id: string }} T
* @param {string} name
* @returns {Registry<T>}
*/
Tff7b72export Tff7b72function Te6edf3createRegistryTb4b4b4(Te6edf3nameTb4b4b4) Tb4b4b4{
T8b949e/** @type {Map<string, T>} */
Tff7b72const Te6edf3entries Tff7b72= Tff7b72new Tffa657MapTb4b4b4(Tb4b4b4)Tb4b4b4;

Tff7b72return Tb4b4b4{
Te6edf3registerTb4b4b4(Te6edf3entryTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3entryTff7b72?Tb4b4b4.Te6edf3idTb4b4b4) Tb4b4b4{
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff`Tffd700${Te6edf3nameTffd700}Ta5d6ff: entry requires an idTa5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3entriesTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3entryTb4b4b4.Te6edf3idTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff`Tffd700${Te6edf3nameTffd700}Ta5d6ff: duplicate entry id "Tffd700${Te6edf3entryTb4b4b4.Te6edf3idTffd700}Ta5d6ff"Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3entriesTb4b4b4.Te6edf3setTb4b4b4(Te6edf3entryTb4b4b4.Te6edf3idTb4b4b4, Te6edf3entryTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3unregisterTb4b4b4(Te6edf3idTb4b4b4) Tb4b4b4{
Te6edf3entriesTb4b4b4.Tff7b72deleteTb4b4b4(Te6edf3idTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3getTb4b4b4(Te6edf3idTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3entriesTb4b4b4.Te6edf3getTb4b4b4(Te6edf3idTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3listTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tffa657ArrayTb4b4b4.Tff7b72fromTb4b4b4(Te6edf3entriesTb4b4b4.Te6edf3valuesTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3clearTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3entriesTb4b4b4.Te6edf3clearTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────